In the client-server environment, the server operating system is called upon to handle communication interaction with a variety of client-based applications. The client operating system locates a server and requests a connection with the server and the server allocates resources to handle requests from the client. This can include, for example, a print request to a designated printer connected locally or to the client.
Examples of such clients include workstations, desktop computers, laptops, hand held devices and the like. Examples of printer devices include laser printers, bubblejet printers, inkjet printers, multi-purpose machines which combine printing, faxing and/or photocopying capabilities, and the like.
In some client-server systems, however, the client computer is a simple machine that is implemented with less functionality than a general-purpose computer. For instance, the client might be implemented as a terminal, which typically provides just enough functionality to enable access to the server computer over a network. The terminal has no operating system or “intelligence”; rather, the operating system and applications reside at the server, and the processing takes place at the server.
More recently, low cost computers known as “network computers” or “NCs” have been introduced as a means for providing access to a network. Network computers have a display, a keyboard, a network port, and limited processing capabilities. Network computers can provide some limited local processing, but are primarily reliant on the server for most processing. Presently available network computers are primarily configured to run applications written in Java, a language introduced by Sun Microsystems. Closely related to the NCs is another type of low cost computer, known as “Net PCs”, which can run both Windows-based and Java-based applications, but which operate in a similar manner to an NC.
Various technologies, and in particular, a technology marketed under the name “MetaFrame” from Citrix Systems Inc., extend the typical Windows NT server operating system to support multiple client-server windowing sessions for connected clients, where each session provides a windowing environment for the connected client.
With the MetaFrame technology, for example, a client can connect to the Windows NT server and begin a windowing session. To the user, it appears as if the client is a standalone Window-enabled computer that is running its own Windows-brand operating system. However, the session is actually taking place on the server computer, remote from the client, and the client is merely running a local graphical user interface to provide entry to the session. In this regard, the MetaFrame technology is particularly well suited for low intelligent client computers, such as terminals and network-centric computers, because the client need not be capable of running its own operating system. However, the MetaFrame technology is also equally well suited for fully enabled clients.
A server operating system supports multiple client-server sessions and enables each client to work with applications hosted by the server and create and print work to local printers (connected to the server) or remote printers (connected to, for example, the client). It should be noted that an essential component of current client-server printer applications is that the host server must be able to support each of the numerous printers which might be selected. This is usually accomplished by installing the relevant printer driver on the host server.
However, issues evolving from the installation of printer drivers on the host server include the volume of printer devices on the market, the stability of the printer drivers for some devices, the reliability of the server after the installation of numerous printer drivers, and naming conventions of drivers among different operating systems.
A common problem with, for example, the Citrix MetaFrame technology, therefore, is the ability to print to any remote printer device. Another problem with Citrix MetaFrame technology is the bandwidth usage taken by the server when processing a print job to a remote printer since bandwidth and speed are also issues that the host server must deal with when processing remote print jobs.
To exemplify the problem, consider a common scenario. A user logs onto the Windows NT server from a client computer at the user's home. Connected to the user's computer is a multi-purpose printer/fax machine. The user works on a document using word-processing software hosted by the server. The user then wants to print the work to the printer/fax machine connected to the home computer. The print job is processed by the server but it cannot be sent to the user's local printing device because the device is not recognized or supported by the server's operating system or because the printing job requires more bandwidth than is available to send the print job across the connection.
The server must also recognize the type of printer/fax machine and send the print job to it in a recognizable form. The bandwidth available to the server-client must also be sufficient enough to allow for the speedy transfer of the file information.
A similar scenario would be a user that is connected to the host server through a terminal.
It should be noted that printers have their own “language”. When work is sent to a printer, the content of the document is transformed to a format that a printer can recognize, interpret and print out. The most common formats are formats developed by Hewlett Packard, Epson and PostScript. Conversion of the work to a printer format is generally accomplished by the use of a driver which driver is particular to an individual machine and operating system.
This means that for each printing device and operating system, a driver must be installed on the host server in order for it to process print jobs to that printing device. It also means that the file created by the server and sent to the printer can vary in size depending on the type of printer. However, these printer files are typically quite large in nature, and thus generally require significant amounts of bandwidth in order to print at a reasonable speed. Also, due to their large size, the transmission speed of transferring the printer file from the server to the client's printer, can significantly affect the speed at which the print job is completed.
Thus, in summary, a common problem in remote printing is that the printer file is large and, accordingly, requires a large bandwidth to transfer the print job. A second problem is that the server must contain the printer driver files for all printers which may be connected to the computer systems of the remote user. A third problem is that the server must remain stable and reliable when dealing with a wide variety of different printer drivers.
While existing systems have met with some success, there is a desire to improve the printing system to better overcome these problems and to better focus on the needs of the user. In particular, there is a need to overcome these problems in order to reduce the bandwidth load, and to reduce the need for a large number of printer drivers to be stored on the host server.